package com.piotrs10.bsk.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.piotrs10.bsk.model.Salon;
import com.piotrs10.bsk.model.Samochod;
import com.piotrs10.bsk.model.Sprzedaje;

public class SprzedajeDao extends BaseDao {
	
	public ArrayList<Sprzedaje> getAll() {
		Connection connection = this.getConnection();
		PreparedStatement statement = null;
		ArrayList<Sprzedaje> list = null;
		try {
			statement = connection.prepareStatement("SELECT pracownik_id, sprzedaz_id FROM sprzedaje;");
			ResultSet set = statement.executeQuery();
			list = new ArrayList<Sprzedaje>();
			while(set.next()) {
				list.add(new Sprzedaje(set.getInt(1), set.getInt(2)));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if(statement != null) {
				try {
					statement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(connection != null) {
				try {
					connection.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return list;
	}
	
	public void delete(Integer pracownik, Integer sprzedaz) {
		Connection connection = this.getConnection();
		PreparedStatement statement = null;
		try {
			statement = connection.prepareStatement("DELETE FROM Sprzedaje " +
						"WHERE pracownik_id = ? AND sprzedaz_id = ?");
			statement.setInt(1, pracownik);
			statement.setInt(2, sprzedaz);
			statement.executeUpdate();
			System.out.println(statement.toString());
			connection.commit();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			if(connection != null)
				try {
					connection.rollback();
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
		} finally {
			if(statement != null) {
				try {
					statement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(connection != null) {
				try {
					connection.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	
	public void save(boolean insert, Sprzedaje sprzedaje) {
		Connection connection = this.getConnection();
		PreparedStatement statement = null;
		try {
			if(insert) {
				statement = connection.prepareStatement("INSERT INTO Sprzedaje " +
						"(pracownik_id, sprzedaz_id) VALUES " +
						"(?, ?)");
			} else {
				statement = connection.prepareStatement(
						"UPDATE Sprzedaje SET pracownik_id = ? , sprzedaz_id = ?"
						+ "WHERE pracownik_id = ? AND sprzedaz_id = ?");
			}
			statement.setInt(1, sprzedaje.getPracownik());
			statement.setInt(2, sprzedaje.getSprzedaz());
			if(!insert) {
				statement.setInt(3, sprzedaje.getPracownik());
				statement.setInt(4, sprzedaje.getSprzedaz());
			}
			
			statement.executeUpdate();
			System.out.println(statement.toString());
			connection.commit();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			if(connection != null)
				try {
					connection.rollback();
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
		} finally {
			if(statement != null) {
				try {
					statement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(connection != null) {
				try {
					connection.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}
